package com.hry.store.dao;

import com.hry.store.pojo.CartItem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

@Mapper
public interface CartItemMapper {
    int deleteByPrimaryKey(Integer id);

    int insertSelective(CartItem record);

    CartItem selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(CartItem record);

    int insertByEmail(CartItem cartItem);

    CartItem selectCartItem(@Param("productId") Integer productId, @Param("productName") String productName,
                            @Param("versionId") Integer versionId, @Param("colorName") String colorName,
                            @Param("productPrice") BigDecimal productPrice, @Param("userEmail") String userEmail);

    int updateCartItemCount(@Param("productId") Integer productId, @Param("productName") String productName,
                            @Param("versionId") Integer versionId, @Param("colorName") String colorName,
                            @Param("productPrice") BigDecimal productPrice, @Param("quantity") Integer quantity,
                            @Param("userEmail") String userEmail, @Param("newTotalPrice") BigDecimal newTotalPrice);

    List selectCartItemByEmail(String userEmail);

    int deleteFromMysql(@Param("productId") Integer productId, @Param("productName") String productName,
                        @Param("productPrice") BigDecimal productPrice, @Param("versionId") Integer versionId,
                        @Param("colorName") String colorName, @Param("userEmail") String userEmail);

    void updateNewCount(@Param("productId") Integer productId, @Param("productName") String productName,
                        @Param("productPrice") BigDecimal productPrice, @Param("versionId") Integer versionId,
                        @Param("colorName") String colorName, @Param("quantity") Integer quantity,
                        @Param("userEmail") String userEmail, @Param("newTotalPrice") BigDecimal newTotalPrice);

    int checked(@Param("productId") Integer productId, @Param("productName") String productName,
                @Param("productPrice") BigDecimal productPrice, @Param("versionId") Integer versionId,
                @Param("colorName") String colorName, @Param("checked") Integer checked,
                @Param("userEmail") String userEmail);

    List<CartItem> findByEmail(String userEmail);
}